﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Configuration;

namespace WebApplication1.Admin
{
    public partial class EntidadesAdministracion : System.Web.UI.Page
    {

        #region StrEntId
        public string StrEntId
        {
            get
            {
                if (ViewState["StrEntId"] != null)
                    return ViewState["StrEntId"].ToString();
                return "";
            }
            set { ViewState["StrEntId"] = value; }
        }
        #endregion

        #region TraerContextItems
        private void TraerContextItems()
        {
            if (Context != null)
            {

                if (Context.Items["StrEntId"] != null)
                    StrEntId = Context.Items["StrEntId"].ToString();
            }
        }
        #endregion

        #region Page_Load
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                TraerContextItems();
                //CARGAR TABLAS BASICAS
                cargarPaises();
                cargarDepartamentos();
                cargarAreasArtistcas();
                //cargarClasesEntidades();
                cargarTipoFormacionArtisticaImparte();
                cargarAreas();
                cargarCaracterEntidad();

                if (StrEntId != "")
                {
                    cargarCampos();
                }
            }

        }
        #endregion

        #region cargarTipoFormacionArtisticaImparte
        private void cargarTipoFormacionArtisticaImparte()
        {
            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.ART_TIPO_FORMACION_ARTISTICA_IMPARTEs

                        select a;
            if (datos == null) return;
            dplFORMACION.DataSource = datos;
            dplFORMACION.TextField = "FRM_FROMACION_IMPARTE";
            dplFORMACION.ValueField = "FRM_ID";
            dplFORMACION.DataBind();
            dplFORMACION.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--Seleccione--", "0"));
        }
        #endregion
                
        #region cargarAreasArtistcas
        private void cargarAreasArtistcas()
        {
            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.ART_AREA_ARTISTICAs
                        where object.Equals(a.ARD_ID, Convert.ToInt32(ConfigurationManager.AppSettings["AREA_ID"].ToString()))
                        select a;
            if (datos == null) return;
            ddlArtAreaArtistica.DataSource = datos;
            ddlArtAreaArtistica.TextField = "ARD_AREA_ARTISTICA";
            ddlArtAreaArtistica.ValueField = "ARD_ID";
            ddlArtAreaArtistica.DataBind();
            ddlArtAreaArtistica.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--Seleccione--", ""));

        }
        #endregion

        #region cargarDepartamentos
        private void cargarDepartamentos()
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
                var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                            where object.Equals(a.ZON_PADRE_ID, null)
                            select a;
                if (datos == null) return;
                ddlDepartamento.DataSource = datos;
                ddlDepartamento.TextField = "ZON_NOMBRE";
                ddlDepartamento.ValueField = "ZON_ID";
                ddlDepartamento.DataBind();
                ddlDepartamento.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--Seleccione--", ""));
            }
            catch (Exception)
            {

                throw;
            }

        }
        #endregion

        #region cargarPaises
        private void cargarPaises()
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
                var datos = from a in contexto.BAS_ZONAS_PAISEs

                            select a;
                if (datos == null) return;
                dpl_PAIS_ENTIDAD.DataSource = datos;
                dpl_PAIS_ENTIDAD.TextField = "ZOP_NOMBRE";
                dpl_PAIS_ENTIDAD.ValueField = "ZOP_ID";
                dpl_PAIS_ENTIDAD.DataBind();
                dpl_PAIS_ENTIDAD.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--Seleccione--", ""));
            }
            catch (Exception)
            {

                throw;
            }

        }
        #endregion

        #region cargarAreas
        private void cargarAreas()
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
                var datos = from a in contexto.ART_TIPO_AREAs

                            select a;
                if (datos == null) return;
                rblArea.DataSource = datos;
                rblArea.TextField = "ARE_NOMBRE";
                rblArea.ValueField = "ARE_ID";
                rblArea.DataBind();
                rblArea.Items[0].Selected = true;

            }
            catch (Exception)
            {

                throw;
            }

        }
        #endregion

        #region cargarCaracterEntidad
        private void cargarCaracterEntidad()
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
                var datos = from a in contexto.ART_ENTIDAD_CARACTERs

                            select a;
                if (datos == null) return;
                dplCARACTER_ENTIDAD.DataSource = datos;
                dplCARACTER_ENTIDAD.TextField = "CAR_NOMBRE";
                dplCARACTER_ENTIDAD.ValueField = "CAR_ID";
                dplCARACTER_ENTIDAD.DataBind();

            }
            catch (Exception)
            {

                throw;
            }

        }
        #endregion

        #region cargarCampos
        private void cargarCampos()
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();

                #region ART_ENTIDADES_ARTES

                var datosEntidad = (from a in contexto.ART_ENTIDADES_ARTEs
                                    where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                    select a);
                foreach (var v in datosEntidad)
                {
                    txtENT_NOMBRE.Text = v.ENT_NOMBRE;
                    txtENT_NIT.Text = v.ENT_NIT;
                    txtENT_ANO_CONSTITUCION.Text = v.ENT_ANO_CONSTITUCION.ToString();
                    txtResena.Text = v.ENT_RESENA;
                    txtENT_NOMBRE_REPRESENTANTE_LEGAL.Text = v.ENT_NOMBRE_REPRESENTANTE_LEGAL;
                }
                #endregion

                #region ART_ENTIDAD_UBICACION
                var datosEntidadUbicacion = (from a in contexto.ART_ENTIDAD_UBICACIONs
                                             where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                             select a);
                foreach (var v in datosEntidadUbicacion)
                {
                    txtENT_DIRECCION.Text = v.ENT_DIRECCION;
                    txtENT_CORREO_ELECTRONICO_ENTIDAD.Text = v.ENT_CORREO_ELECTRONICO_ENTIDAD;
                    txtENT_PAGINA_WEB1.Text = v.ENT_PAGINA_WEB;
                    dpl_PAIS_ENTIDAD.Value = v.ZOP_ID.ToString();
                    rblArea.SelectedItem.Value = v.ARE_ID;


                    if (!String.IsNullOrEmpty(v.ZON_ID))
                    {
                        string strDep = v.ZON_ID.Substring(0, 2);
                        ddlDepartamento.Value = strDep;

                        var datosZonas = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                                         where object.Equals(a.ZON_PADRE_ID, strDep)
                                         select a;
                        if (datosZonas != null)
                        {
                            ddlMunicipio.DataSource = datosZonas;
                            ddlMunicipio.TextField = "ZON_NOMBRE";
                            ddlMunicipio.ValueField = "ZON_ID";
                            ddlMunicipio.DataBind();
                            ddlMunicipio.Value = v.ZON_ID;
                        }
                    }

                }
                #endregion

                #region ART_ENTIDAD_FORMACION
                var datosImparteFormacion = (from a in contexto.ART_ENTIDAD_FORMACIONs
                                             where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                             select a);
                foreach (var v in datosImparteFormacion)
                {
                    //if(v.ENT_SINO_IMPARTE_FORMACION.ToString() == "S")
                    //rblSiNoImparteFormacion.Items[0].Selected = true;
                    //else
                    //rblSiNoImparteFormacion.Items[1].Selected = true;

                    rblSiNoImparteFormacion.SelectedItem.Value = v.ENT_SINO_IMPARTE_FORMACION.ToString();
                    dplFORMACION.Value = v.FRM_ID.ToString();

                }
                #endregion

                #region ART_ENTIDAD_NATURALEZA
                var datosEntidadNaturalezaJuridica = (from a in contexto.ART_ENTIDAD_NATURALEZA_JURIDICAs
                                                      where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                                      select a);
                foreach (var v in datosEntidadNaturalezaJuridica)
                {
                    dplNATURALEZA.Value = v.ENT_NATURALEZA;
                    dplCARACTER_ENTIDAD.Value = v.CAR_ID.ToString();

                }
                #endregion

                #region ART_ENTIDAD_INFRAESTRUCTURA
                var datosEntidadInfraestructura = (from a in contexto.ART_ENTIDAD_INFRAESTRUCTURAs
                                                   where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                                   select a);
                foreach (var v in datosEntidadInfraestructura)
                {

                    opcINFRAESTRUCTURA_DISCAPACITADOS.Value = v.ENT_SINO_INFRAESTRUCTURA_DISCAPACITADOS;


                }
                #endregion

                #region ART_ENTIDADES_ACTIVIDAD
                var datosActividad = from a in contexto.ART_ENTIDADES_ARTEs
                                     join b in contexto.ART_ENTIDAD_ACTIVIDADs on a.ENT_ID equals b.ENT_ID
                                     join c in contexto.ART_ENTIDAD_UBICACIONs on a.ENT_ID equals c.ENT_ID
                                     join e in contexto.ART_TIPO_ENTIDAD_ARTISTICAs on b.TEA_ID equals e.TEA_ID
                                     join f in contexto.ART_CLASE_ENTIDAD_ARTISTICAs on b.ACE_ID equals f.ACE_ID
                                     where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                     select new
                                     {
                                         a.ENT_ID,
                                         a.ENT_NOMBRE,
                                         c.ENT_DIRECCION,
                                         b.TEA_ID,
                                         e.TEA_DESCRIPCION,
                                         f.ACE_NOMBRE,
                                         e.ART_AREA_ARTISTICA,
                                         f.ACE_ID
                                     };

                foreach (var v in datosActividad)
                {
                    ddlArtAreaArtistica.Value = ConfigurationManager.AppSettings["AREA_ID"].ToString();
                    //CARGA COMBO TIPO 2
                    var datosTipoEntidad = from i in contexto.ART_TIPO_ENTIDAD_ARTISTICAs
                                           where object.Equals(i.TEA_AREA_ID, ddlArtAreaArtistica.Value)
                                           select i;
                    ddlArtTipoEntidadArtistica.DataSource = datosTipoEntidad;
                    ddlArtTipoEntidadArtistica.TextField = "TEA_DESCRIPCION";
                    ddlArtTipoEntidadArtistica.ValueField = "TEA_ID";
                    ddlArtTipoEntidadArtistica.DataBind();
                    ddlArtTipoEntidadArtistica.Value = v.TEA_ID.ToString();

                    //CARGA COMBO TIPO 3
                    var datosClaseEntidad = from l in contexto.ART_CLASE_ENTIDAD_ARTISTICAs
                                            where object.Equals(l.TEA_ID, ddlArtTipoEntidadArtistica.Value)
                                            select l;
                    ddlArtClaseEntidadArtistica.DataSource = datosClaseEntidad;
                    ddlArtClaseEntidadArtistica.TextField = "ACE_NOMBRE";
                    ddlArtClaseEntidadArtistica.ValueField = "ACE_ID";
                    ddlArtClaseEntidadArtistica.DataBind();
                    ddlArtClaseEntidadArtistica.Value = v.ACE_ID.ToString();

                }
                #endregion

                #region ART_ENTIDADES_DANZA
                var datosEntidadDanza = (from a in contexto.ART_ENTIDADES_DANZAs
                                         where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                         select a);
                foreach (var v in datosEntidadDanza)
                {
                    txtEND_ANOS_TRAYECTORIA.Text = v.END_ANOS_TRAYECTORIA.ToString();

                    if (!String.IsNullOrEmpty(v.END_INSTITUCIONALIDAD_ARCHIVO))
                    {
                        hplInstitucionalidad.Text = v.END_INSTITUCIONALIDAD_ARCHIVO.ToString();
                        hplInstitucionalidad.NavigateUrl = "../archivos/" + v.END_INSTITUCIONALIDAD_ARCHIVO.ToString();
                        hplInstitucionalidad.Visible = true;
                        hplInstitucionalidad.Target = "_blank";
                    }

                    txtEND_FINANCIACION.Text = v.END_FINANCIACION;
                    txtEND_HORAS_SEMANA.Text = v.END_HORAS_SEMANA.ToString();
                    txtEND_MESES_ANO.Text = v.END_MESES_ANO.ToString();
                    txtEND_PERIODOS_DESCANSO.Text = v.END_PERIODOS_DESCANSO.ToString();

                    if (!String.IsNullOrEmpty(v.END_FORMADORES_ARCHIVO))
                    {
                        hplkEND_FORMADORES_ARCHIVO.Text = v.END_FORMADORES_ARCHIVO.ToString();
                        hplkEND_FORMADORES_ARCHIVO.NavigateUrl = "../archivos/" + v.END_FORMADORES_ARCHIVO.ToString();
                        hplkEND_FORMADORES_ARCHIVO.Visible = true;
                        hplkEND_FORMADORES_ARCHIVO.Target = "_blank";
                    }
                    txtEND_CONDICIONES_LABORALES_FORMADORES.Text = v.END_CONDICIONES_LABORALES_FORMADORES;

                    if (!String.IsNullOrEmpty(v.END_PROGRAMA_ARCHIVO))
                    {
                        hplkEND_PROGRAMA_ARCHIVO.Text = v.END_PROGRAMA_ARCHIVO.ToString();
                        hplkEND_PROGRAMA_ARCHIVO.NavigateUrl = "../archivos/" + v.END_PROGRAMA_ARCHIVO.ToString();
                        hplkEND_PROGRAMA_ARCHIVO.Visible = true;
                        hplkEND_PROGRAMA_ARCHIVO.Target = "_blank";
                    }

                    txtEND_LOGROS_ESCUELA.Text = v.END_LOGROS_ESCUELA;
                    txtEND_INFRAESTRUCTURA.Text = v.END_INFRAESTRUCTURA;
                    txtEND_ACTIVIDADES_ACTUALIZACIONES.Text = v.END_ACTIVIDADES_ACTUALIZACIONES;



                }
                #endregion

            }
            catch (Exception)
            {

                throw;
            }
        }
        #endregion

        #region salvarArchivo
        private string salvarArchivo(FileUpload fileUpload1, ref HyperLink lnkArchivoLocal)
        {
            string strNombreArchivo = null;
            if (fileUpload1 != null && lnkArchivoLocal != null)
            {

                if (fileUpload1.HasFile)
                {
                    strNombreArchivo = DateTime.Now.ToString().Replace("/", "-").Replace(":", ".") + "_" +
                                           fileUpload1.FileName;
                    //Obtiene el nombre del archivo
                    //Obtiene la locacion fisica del archivo
                    int nIndex = 0;
                    string strLocation = ConfigurationManager.AppSettings["rutaArchivos"];//Server.MapPath("Archivos");
                    //Salva el archivo
                    fileUpload1.PostedFile.SaveAs(strLocation + strNombreArchivo);
                    //actualiza el link del archivo

                    lnkArchivoLocal.Text = strNombreArchivo;
                    string path = this.Request.Url.AbsolutePath;
                    if (nIndex > 0)
                    {
                        path = path.Substring(0, nIndex);
                    }


                    lnkArchivoLocal.NavigateUrl = "../Archivos/" + strNombreArchivo;
                    // GetPath() + "/" + RelativePath + "/" + strNombreArchivo;
                    //txtDocumentoOculto.Text = FileUploaded; //para que funcione el custom validator
                    lnkArchivoLocal.Visible = true;
                    lnkArchivoLocal.Target = "_blank";
                    //btnEliminarArchivoDocumento.Visible = true;

                    //lblFileMessage.CssClass = "fila1";
                    //lblFileMessage.Text = "Por favor no cargue documentos que superen los " + this.MaxLength + " Kb";


                }
                //else
                //{
                //    algo = "No file was uploaded.";
                //}


            }
            return strNombreArchivo;
        }
        #endregion

        #region btnGuardar_Click
        protected void btnGuardar_Click(object sender, EventArgs e)
        {

            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();

            ///////////////////////////////////////////////
            //            ART_ENTIDADES_ARTES            //
            ///////////////////////////////////////////////

            #region ADICIONAR ART_ENTIDADES_ARTES

            if (StrEntId == "")
            {
                Model.ART_ENTIDADES_ARTE objART_ENTIDADES_ARTE = new Model.ART_ENTIDADES_ARTE();
                    objART_ENTIDADES_ARTE.ENT_NOMBRE = txtENT_NOMBRE.Text;
                    objART_ENTIDADES_ARTE.ENT_NIT = txtENT_NIT.Text;
                    objART_ENTIDADES_ARTE.DOC_ID_ENTIDAD = 4;
                    objART_ENTIDADES_ARTE.DOC_ID_REPRESENTANTE = 2;
                    objART_ENTIDADES_ARTE.ENT_ANO_CONSTITUCION = Convert.ToInt16(txtENT_ANO_CONSTITUCION.Text);
                    objART_ENTIDADES_ARTE.ENT_RESENA = txtResena.Text;
                    objART_ENTIDADES_ARTE.ENT_NOMBRE_REPRESENTANTE_LEGAL = txtENT_NOMBRE_REPRESENTANTE_LEGAL.Text;
                    objART_ENTIDADES_ARTE.ENT_FECHA_DILIGENCIAMIENTO = DateTime.Now;
                    objART_ENTIDADES_ARTE.ENT_FECHA_VIGENCIA_INICIAL = DateTime.Now;
                    objART_ENTIDADES_ARTE.ENT_FECHA_VIGENCIA_FINAL = DateTime.Now;
                    objART_ENTIDADES_ARTE.DOC_ID_ENTIDAD = Convert.ToDecimal( ddlArtTipoEntidadArtistica.Value);
                    contexto.ART_ENTIDADES_ARTEs.InsertOnSubmit(objART_ENTIDADES_ARTE);
                    contexto.SubmitChanges();
                    StrEntId = objART_ENTIDADES_ARTE.ENT_ID.ToString();
            }

            #endregion
           
            #region ACTUALIZAR ART_ENTIDADES_ARTES
		    else if (StrEntId != "")
            {
                var datosEntidadArtes = (from a in contexto.ART_ENTIDADES_ARTEs
                                         where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                         select a);
                foreach (var v in datosEntidadArtes)
                {
                    v.ENT_NOMBRE = txtENT_NOMBRE.Text;
                    v.ENT_NIT = txtENT_NIT.Text;
                    v.ENT_ANO_CONSTITUCION = Convert.ToInt32(txtENT_ANO_CONSTITUCION.Text);
                    v.ENT_RESENA = txtResena.Text;
                    v.ENT_NOMBRE_REPRESENTANTE_LEGAL = txtENT_NOMBRE_REPRESENTANTE_LEGAL.Text;
                    contexto.SubmitChanges();
                }
            } 
	        #endregion

            bool boolExisteUbicacion = false;

            ///////////////////////////////////////////////
            //            ART_ENTIDADES_ARTES            //
            ///////////////////////////////////////////////

            #region ACTUALIZAR ART_ENTIDAD_UBICACION

            var datosEntidadUbicacion = (from a in contexto.ART_ENTIDAD_UBICACIONs
                                         where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                         select a
                                         );
            foreach (var v in datosEntidadUbicacion)
            {
                v.ENT_DIRECCION = txtENT_DIRECCION.Text;
                v.ENT_CORREO_ELECTRONICO_ENTIDAD = txtENT_CORREO_ELECTRONICO_ENTIDAD.Text;
                v.ENT_PAGINA_WEB = txtENT_PAGINA_WEB1.Text;
                v.ZOP_ID = Convert.ToInt32(dpl_PAIS_ENTIDAD.Value);
                v.ARE_ID = Convert.ToDecimal(rblArea.SelectedItem.Value);
                v.ZON_ID = ddlMunicipio.Value.ToString();
                contexto.SubmitChanges();
                boolExisteUbicacion = true;
            }
            #endregion

            #region ADICIONAR ART_ENTIDAD_UBICACION
            if (!boolExisteUbicacion)
            {
                Model.ART_ENTIDAD_UBICACION objART_ENTIDAD_UBICACION = new Model.ART_ENTIDAD_UBICACION();
                objART_ENTIDAD_UBICACION.ENT_ID = Convert.ToDecimal(StrEntId);

                objART_ENTIDAD_UBICACION.ENT_DIRECCION = txtENT_DIRECCION.Text;
                objART_ENTIDAD_UBICACION.ENT_CORREO_ELECTRONICO_ENTIDAD = txtENT_CORREO_ELECTRONICO_ENTIDAD.Text;
                objART_ENTIDAD_UBICACION.ENT_PAGINA_WEB = txtENT_PAGINA_WEB1.Text;
                objART_ENTIDAD_UBICACION.ZOP_ID = Convert.ToInt32(dpl_PAIS_ENTIDAD.Value);
                objART_ENTIDAD_UBICACION.ARE_ID = Convert.ToDecimal(rblArea.SelectedItem.Value);
                objART_ENTIDAD_UBICACION.ZON_ID = ddlMunicipio.Value.ToString();
                contexto.ART_ENTIDAD_UBICACIONs.InsertOnSubmit(objART_ENTIDAD_UBICACION);
                contexto.SubmitChanges();
            }
            #endregion

            
            ///////////////////////////////////////////////
            //            ART_ENTIDAD_FORMACION          //
            ///////////////////////////////////////////////

            bool boolExisteFormacion = false;

            #region ACTUALIZAR ART_ENTIDAD_FORMACION
            var datosImparteFormacion = (from a in contexto.ART_ENTIDAD_FORMACIONs
                                         where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                         select a);
            foreach (var v in datosImparteFormacion)
            {
                v.ENT_SINO_IMPARTE_FORMACION = Convert.ToChar(rblSiNoImparteFormacion.SelectedItem.Value);
                v.FRM_ID = Convert.ToDecimal(dplFORMACION.Value);
                boolExisteFormacion = true;
            }

            #endregion

            #region ADICIONAR ART_ENTIDAD_FORMACION
            if (!boolExisteFormacion)
            {
                Model.ART_ENTIDAD_FORMACION objART_ENTIDAD_FORMACION = new Model.ART_ENTIDAD_FORMACION();
                objART_ENTIDAD_FORMACION.ENT_SINO_IMPARTE_FORMACION = Convert.ToChar(rblSiNoImparteFormacion.SelectedItem.Value);
                objART_ENTIDAD_FORMACION.FRM_ID = Convert.ToDecimal(dplFORMACION.Value);
                objART_ENTIDAD_FORMACION.ENT_ID = Convert.ToDecimal(StrEntId);
                contexto.ART_ENTIDAD_FORMACIONs.InsertOnSubmit(objART_ENTIDAD_FORMACION);   //Model.
                contexto.SubmitChanges();
            } 
            #endregion

            ///////////////////////////////////////////////
            //            ART_ENTIDAD_NATURALEZA         //
            ///////////////////////////////////////////////

            bool boolExisteNaturaleza = false;
            #region ACTUALIZAR ART_ENTIDAD_NATURALEZA
            var datosEntidadNaturalezaJuridica = (from a in contexto.ART_ENTIDAD_NATURALEZA_JURIDICAs
                                                  where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                                  select a);
            foreach (var v in datosEntidadNaturalezaJuridica)
            {
                v.ENT_NATURALEZA = dplNATURALEZA.Value.ToString();
                v.CAR_ID = Convert.ToDecimal(dplCARACTER_ENTIDAD.Value);
                boolExisteNaturaleza = true;
            }
            #endregion

            #region ADICIONAR ART_ENTIDAD_NATURALEZA_JURIDICA
            if (!boolExisteNaturaleza)
            {
                Model.ART_ENTIDAD_NATURALEZA_JURIDICA objART_ENTIDAD_NATURALEZA_JURIDICA = new Model.ART_ENTIDAD_NATURALEZA_JURIDICA();
                objART_ENTIDAD_NATURALEZA_JURIDICA.ENT_NATURALEZA = dplNATURALEZA.Value.ToString();
                objART_ENTIDAD_NATURALEZA_JURIDICA.CAR_ID = Convert.ToDecimal(dplCARACTER_ENTIDAD.Value);
                objART_ENTIDAD_NATURALEZA_JURIDICA.ENT_ID = Convert.ToDecimal(StrEntId);
                contexto.ART_ENTIDAD_NATURALEZA_JURIDICAs.InsertOnSubmit(objART_ENTIDAD_NATURALEZA_JURIDICA);
            } 
            #endregion


            ///////////////////////////////////////////////
            //       ART_ENTIDAD_INFRAESTRUCTURA         //
            ///////////////////////////////////////////////

            bool boolExisteInfraestructura = false;

            #region ACTUALIZAR ART_ENTIDAD_INFRAESTRUCTURA
            var datosEntidadInfraestructura = (from a in contexto.ART_ENTIDAD_INFRAESTRUCTURAs
                                               where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                               select a);
            foreach (var v in datosEntidadInfraestructura)
            {

                opcINFRAESTRUCTURA_DISCAPACITADOS.Value = v.ENT_SINO_INFRAESTRUCTURA_DISCAPACITADOS;
                boolExisteInfraestructura = true;
            }
            #endregion

            #region ADICIONAR ART_ENTIDAD_INFRAESTRUCTURA
            if (!boolExisteInfraestructura)
            {
                Model.ART_ENTIDAD_INFRAESTRUCTURA objART_ENTIDAD_INFRAESTRUCTURA = new Model.ART_ENTIDAD_INFRAESTRUCTURA();
                objART_ENTIDAD_INFRAESTRUCTURA.ENT_SINO_INFRAESTRUCTURA_DISCAPACITADOS = Convert.ToChar(opcINFRAESTRUCTURA_DISCAPACITADOS.Value);
                objART_ENTIDAD_INFRAESTRUCTURA.ENT_ID = Convert.ToDecimal(StrEntId);
                contexto.ART_ENTIDAD_INFRAESTRUCTURAs.InsertOnSubmit(objART_ENTIDAD_INFRAESTRUCTURA);
                contexto.SubmitChanges();
            } 
            #endregion


            ///////////////////////////////////////////////
            //       ART_ENTIDADES_ACTIVIDAD             //
            ///////////////////////////////////////////////

            bool boolExisteActividad = false;

            #region ACTUALIZAR ART_ENTIDADES_ACTIVIDAD
            var datosActividad = from a in contexto.ART_ENTIDAD_ACTIVIDADs
                                 
                                 where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                 select a;

            foreach (var v in datosActividad)
            {
                v.TEA_ID = Convert.ToDecimal(ddlArtTipoEntidadArtistica.Value);
                v.ACE_ID = Convert.ToDecimal(ddlArtClaseEntidadArtistica.Value);
                boolExisteActividad = true;
            }
            #endregion

            #region ADICIONAR ART_ENTIDAD_ACTIVIDAD

            if (!boolExisteActividad)
            {
                Model.ART_ENTIDAD_ACTIVIDAD objART_ENTIDAD_ACTIVIDAD = new Model.ART_ENTIDAD_ACTIVIDAD();
                objART_ENTIDAD_ACTIVIDAD.TEA_ID = Convert.ToDecimal(ddlArtTipoEntidadArtistica.Value);
                objART_ENTIDAD_ACTIVIDAD.ACE_ID = Convert.ToDecimal(ddlArtClaseEntidadArtistica.Value);
                objART_ENTIDAD_ACTIVIDAD.ENT_ID = Convert.ToDecimal(StrEntId);
                contexto.ART_ENTIDAD_ACTIVIDADs.InsertOnSubmit(objART_ENTIDAD_ACTIVIDAD);
                contexto.SubmitChanges();
            } 
            #endregion

            ///////////////////////////////////////////////
            //            ART_ENTIDADES_DANZA            //
            ///////////////////////////////////////////////

            decimal decEndId = 0;
            //
            #region ACTUALIZAR ART_ENTIDADES_DANZA
            var datosEntidadDanza = (from a in contexto.ART_ENTIDADES_DANZAs
                                     where a.ENT_ID == Convert.ToDecimal(StrEntId)
                                     select a);
            foreach (var v in datosEntidadDanza)
            {
                v.END_ANOS_TRAYECTORIA = Convert.ToInt32(txtEND_ANOS_TRAYECTORIA.Text);

                v.ENT_ID = Convert.ToDecimal(StrEntId);

                if (!hplInstitucionalidad.Visible || fuInstitucionalidad.HasFile)
                {
                    DeleteFile(hplInstitucionalidad.Text);
                    v.END_INSTITUCIONALIDAD_ARCHIVO = salvarArchivo(fuInstitucionalidad, ref hplInstitucionalidad);
                }
                else
                    v.END_INSTITUCIONALIDAD_ARCHIVO = hplInstitucionalidad.Text;

                v.END_FINANCIACION = txtEND_FINANCIACION.Text;
                v.END_HORAS_SEMANA = Convert.ToInt32(txtEND_HORAS_SEMANA.Text);
                v.END_MESES_ANO = Convert.ToInt32(txtEND_MESES_ANO.Text);
                v.END_PERIODOS_DESCANSO = txtEND_PERIODOS_DESCANSO.Text;


                if (!hplkEND_FORMADORES_ARCHIVO.Visible || FileUploadFormadoresArchivo.HasFile)
                {
                    DeleteFile(hplkEND_FORMADORES_ARCHIVO.Text);
                    v.END_FORMADORES_ARCHIVO = salvarArchivo(FileUploadFormadoresArchivo, ref hplkEND_FORMADORES_ARCHIVO);
                }
                else
                    v.END_FORMADORES_ARCHIVO = hplkEND_FORMADORES_ARCHIVO.Text;


                if (!hplkEND_PROGRAMA_ARCHIVO.Visible || FileUploadhplkPROGRAMA_ARCHIVO.HasFile)
                {
                    DeleteFile(hplkEND_PROGRAMA_ARCHIVO.Text);
                    v.END_PROGRAMA_ARCHIVO = salvarArchivo(FileUploadhplkPROGRAMA_ARCHIVO, ref hplkEND_PROGRAMA_ARCHIVO);
                }
                else
                    v.END_PROGRAMA_ARCHIVO = hplkEND_PROGRAMA_ARCHIVO.Text;

                v.END_CONDICIONES_LABORALES_FORMADORES = txtEND_CONDICIONES_LABORALES_FORMADORES.Text;


                //hplkEND_PROGRAMA_ARCHIVO.Text = v.END_PROGRAMA_ARCHIVO;
                //hplkEND_PROGRAMA_ARCHIVO.NavigateUrl = "../archivos/" + v.END_PROGRAMA_ARCHIVO.ToString();
                //hplkEND_PROGRAMA_ARCHIVO.Visible = true;
                //hplkEND_PROGRAMA_ARCHIVO.Target = "_blank";

                v.END_LOGROS_ESCUELA = txtEND_LOGROS_ESCUELA.Text;
                v.END_INFRAESTRUCTURA = txtEND_INFRAESTRUCTURA.Text;
                v.END_ACTIVIDADES_ACTUALIZACIONES = txtEND_ACTIVIDADES_ACTUALIZACIONES.Text;
                contexto.SubmitChanges();
                decEndId = v.END_ID;
            }
            #endregion
            
            #region ADICIONAR ART_ENTIDADES_DANZA
            Model.ART_ENTIDADES_DANZA objDanza = new Model.ART_ENTIDADES_DANZA();
            if (decEndId == 0)
            {
                objDanza.END_ANOS_TRAYECTORIA = Convert.ToInt32(txtEND_ANOS_TRAYECTORIA.Text);

                objDanza.ENT_ID  = Convert.ToDecimal(StrEntId);
                if (!hplInstitucionalidad.Visible || fuInstitucionalidad.HasFile)
                {
                    DeleteFile(hplInstitucionalidad.Text);
                    objDanza.END_INSTITUCIONALIDAD_ARCHIVO = salvarArchivo(fuInstitucionalidad, ref hplInstitucionalidad);

                }
                else
                    objDanza.END_INSTITUCIONALIDAD_ARCHIVO = hplInstitucionalidad.Text;


                //hplInstitucionalidad.NavigateUrl = "../archivos/" + v.END_INSTITUCIONALIDAD_ARCHIVO.ToString();
                //hplInstitucionalidad.Visible = true;
                //hplInstitucionalidad.Target = "_blank";

                objDanza.END_FINANCIACION = txtEND_FINANCIACION.Text;
                objDanza.END_HORAS_SEMANA = Convert.ToInt32(txtEND_HORAS_SEMANA.Text);
                objDanza.END_MESES_ANO = Convert.ToInt32(txtEND_MESES_ANO.Text);
                objDanza.END_PERIODOS_DESCANSO = txtEND_PERIODOS_DESCANSO.Text;
                if (!hplkEND_FORMADORES_ARCHIVO.Visible || FileUploadFormadoresArchivo.HasFile)
                {
                    DeleteFile(hplkEND_FORMADORES_ARCHIVO.Text);
                    objDanza.END_FORMADORES_ARCHIVO = salvarArchivo(FileUploadFormadoresArchivo, ref hplkEND_FORMADORES_ARCHIVO);
                }
                else
                    objDanza.END_FORMADORES_ARCHIVO = hplkEND_FORMADORES_ARCHIVO.Text;


                if (!hplkEND_PROGRAMA_ARCHIVO.Visible || FileUploadhplkPROGRAMA_ARCHIVO.HasFile)
                {
                    DeleteFile(hplkEND_PROGRAMA_ARCHIVO.Text);
                    objDanza.END_PROGRAMA_ARCHIVO = salvarArchivo(FileUploadhplkPROGRAMA_ARCHIVO, ref hplkEND_PROGRAMA_ARCHIVO);
                }
                else
                    objDanza.END_PROGRAMA_ARCHIVO = hplkEND_PROGRAMA_ARCHIVO.Text;

             

                objDanza.END_CONDICIONES_LABORALES_FORMADORES = txtEND_CONDICIONES_LABORALES_FORMADORES.Text;
              

                objDanza.END_LOGROS_ESCUELA = txtEND_LOGROS_ESCUELA.Text;
                objDanza.END_INFRAESTRUCTURA = txtEND_INFRAESTRUCTURA.Text;
                objDanza.END_ACTIVIDADES_ACTUALIZACIONES = txtEND_ACTIVIDADES_ACTUALIZACIONES.Text;

                //decEndId = objDanza.END_ID;
                contexto.ART_ENTIDADES_DANZAs.InsertOnSubmit(objDanza);
                objDanza.ENT_ID = Convert.ToDecimal(StrEntId);
                //// GUARDAR GENERAL
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteA", "alert('La información  se guardo exitosamente');", true);
                contexto.SubmitChanges();
            } 
            #endregion

            
        }
        #endregion

        #region DeleteFile
        private void DeleteFile(string strFileName)
        {

            strFileName = ConfigurationManager.AppSettings["rutaArchivos"] + strFileName;
            //Delete file from the server

            if (strFileName.Trim().Length > 0)
            {
                FileInfo fi = new FileInfo(strFileName);
                if (fi.Exists) //if file exists delete it
                {
                    fi.Delete();
                }
            }
        }
        #endregion

        #region ddlDepartamento_SelectedIndexChanged
        protected void ddlDepartamento_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlDepartamento.Value.ToString() == "") return;
            if (ddlDepartamento.Value.ToString() == "0")
            {
                ddlMunicipio.Items.Clear();
                return;
            }

            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                        where object.Equals(a.ZON_PADRE_ID, ddlDepartamento.Value)
                        select a;
            if (datos == null) return;
            ddlMunicipio.DataSource = datos;
            ddlMunicipio.TextField = "ZON_NOMBRE";
            ddlMunicipio.ValueField = "ZON_ID";
            ddlMunicipio.DataBind();
        }
        #endregion

        #region ddlArtAreaArtistica_SelectedIndexChanged
        protected void ddlArtAreaArtistica_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlArtAreaArtistica.Value == "")
            {
                ddlArtTipoEntidadArtistica.Items.Clear();
                return;
            }
            if (ddlArtAreaArtistica.Value == "0")
            {
                ddlArtTipoEntidadArtistica.Items.Clear();
                return;
            }
            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.ART_TIPO_ENTIDAD_ARTISTICAs
                        where object.Equals(a.TEA_AREA_ID, ddlArtAreaArtistica.Value)
                        select a;
            if (datos == null) return;
            ddlArtTipoEntidadArtistica.DataSource = datos;
            ddlArtTipoEntidadArtistica.TextField = "TEA_DESCRIPCION";
            ddlArtTipoEntidadArtistica.ValueField = "TEA_ID";
            ddlArtTipoEntidadArtistica.DataBind();
        }

        protected void ddlArtTipoEntidadArtistica_SelectedIndexChanged(object sender, EventArgs e)
        {
            cargarClasesEntidades();
        }
        #endregion

        #region cargarClasesEntidades
        private void cargarClasesEntidades()
        {
            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.ART_CLASE_ENTIDAD_ARTISTICAs
                        where object.Equals(a.TEA_ID, ddlArtTipoEntidadArtistica.Value.ToString())
                        select a;
            if (datos == null) return;
            ddlArtClaseEntidadArtistica.DataSource = datos;
            ddlArtClaseEntidadArtistica.TextField = "ACE_NOMBRE";
            ddlArtClaseEntidadArtistica.ValueField = "ACE_ID";
            ddlArtClaseEntidadArtistica.DataBind();
            ddlArtClaseEntidadArtistica.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--Seleccione--", "0"));
        }
        #endregion


        #region Boton Regresar
        protected void btnRegresar_Click(object sender, EventArgs e)
        {
            Server.Transfer("EntidadesListado.aspx", true);
        }
        #endregion

        #region Boton Publicar
        protected void btnPublicar_Click(object sender, EventArgs e)
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();

                var datos = from a in contexto.ART_ENTIDADES_ARTEs
                            where a.ENT_ID == Convert.ToDecimal(StrEntId)
                            select a;

                foreach (var v in datos)
                {

                    v.ENT_ESTADO = 'P';
                    contexto.SubmitChanges();
                }
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "LA INFORMACIÓN SE PUBLICÓ EXITOSAMENTE", true);
            }
            catch (Exception ex)
            {

                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", ex.Message.ToString(), true);
            }
        }
        #endregion
    }
}